home *** CD-ROM | disk | FTP | other *** search
- //: C20:SimpleGenerators.h
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Generic generators, including
- // one that creates pairs
- #include <iostream>
- #include <utility>
-
- // A generator that increments its value:
- template<typename T>
- class IncrGen {
- T i;
- public:
- IncrGen(T ii) : i (ii) {}
- T operator()() { return i++; }
- };
-
- // A generator that produces an STL pair<>:
- template<typename T1, typename T2>
- class PairGen {
- T1 i;
- T2 j;
- public:
- PairGen(T1 ii, T2 jj) : i(ii), j(jj) {}
- std::pair<T1,T2> operator()() {
- return std::pair<T1,T2>(i++, j++);
- }
- };
-
- // A generic global operator<<
- // for printing any STL pair<>:
- template<typename Pair> std::ostream&
- operator<<(std::ostream& os, const Pair& p) {
- return os << p.first << "\t"
- << p.second << std::endl;
- } ///:~
-